Шаг 3. Разрешаем конфликт при затягивании изменений
Настал основной этап. Сначала нам нужно затянуть изменения с удалённого репозитория в локальный с помощью команды git pull.
Разберём последние три сообщения, потому что они наиболее важные. Сначала Git попытался сделать автоматическое слияние в index.html. Затем он обнаружил, что произошёл конфликт при слиянии двух разных версий. Последним сообщением он выдал, что автоматическое слияние невозможно, нужно разрешить конфликт вручную, а затем сделать коммит.
Перейдём в index.html. Мы видим, что в нём появилось много непонятных строчек, но на самом деле всё просто.
Первая часть начинается на <<<<<<< и заканчивается =======. Между ними находятся те изменения, которые были сделаны локально, то есть не в удалённом репозитории. Также есть надпись HEAD — это относительный указатель. В нашем случае он указывает на указатель ветки main, а он в свою очередь указывает на сделанный нами последний коммит. В этом коммите содержится изменение — добавление текста «Перейти на главную страницу».
Изменения, которые находятся между ======= и >>>>>>>, считаются приходящими, так как строчка с текстом «Перейти на страницу „О курсе“» была добавлена в удалённом репозитории. Ещё у нас есть непонятные символы, которые указаны после >>>>>>>. Это хэш того самого коммита, который пришёл к нам в локальный репозиторий с удалённого.
Нам нужно удалить всё лишнее и оставить только «Перейти на страницу „О курсе“».
Далее нам нужно закоммитить изменение. Сначала пропишем команду git add -A, а затем git commit -m "fix: conflict resolved when pulling changes".
Коммит успешно создан, конфликт тоже разрешён. Нам осталось только отправить изменения в удалённый репозиторий с помощью команды git push.
Перейдём в удалённый репозиторий и убедимся, что изменения отправлены.
Когда вы делали коммит, могли заметить, что ветка main получила другое название — main|MERGING. Данная ветка создаётся всегда, когда происходит конфликт, и удаляется автоматически после решения конфликта. Также из интересных особенностей: во время конфликта файл помечается синим цветом, а рядом с именем файла устанавливается восклицательный знак.